<html>
<head>
	<title>Serialization benchmark results</title>
	<link href='default.css' rel='stylesheet' type='text/css' />
</head>
<body>

<h2>Results of <span>Northwind database rows serialization</span> benchmarks run at 05/02/2010</h2>
<span class="summary">These benchmarks show the total time in ticks (1/1000ms) that it takes each serializer to serialize and deserialize the first row from each table in the  <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Common/DataModel/NorthwindData.cs'>Northwind Database</a><strong>10000</strong> Times. <br/><br/>The full source code of the serialization benchmarks (which generated this report) is <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Benchmarks.Console/Program.cs'>available here</a>.</span><div id='combined'>
<h3>Combined results of all benchmarks below</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>3645</td><th>4.36x</th><td>3675</td><td>6978</td><td>10653</td><td>1065.3</td><th>4.27x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>1771</td><th>2.12x</th><td>4979</td><td>9804</td><td>14783</td><td>1478.3</td><th>5.93x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>1815</td><th>2.17x</th><td>11463</td><td>21597</td><td>33060</td><td>3306</td><th>13.26x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>4419</td><th>5.29x</th><td>9178</td><td>8254</td><td>17432</td><td>1743.2</td><th>6.99x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>1825</td><th>2.18x</th><td>3623</td><td>8296</td><td>11919</td><td>1191.9</td><th>4.78x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>836</td><th>1x</th><td>1186</td><td>1307</td><td>2493</td><td>249.3</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>1397</td><th>1.67x</th><td>2186</td><td>1427</td><td>3613</td><td>361.3</td><th>1.45x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>1544</td><th>1.85x</th><td>1337</td><td>2314</td><td>3651</td><td>365.1</td><th>1.46x</th></tr>
</tbody>
</table>
</div>
<h3>Results of serializing and deserializing CategoryDto 10 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>275</td><th>4.74x</th><td>1118</td><td>621</td><td>1739</td><td>173.9</td><th>5.89x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>95</td><th>1.64x</th><td>508</td><td>716</td><td>1224</td><td>122.4</td><th>4.15x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>110</td><th>1.90x</th><td>681</td><td>1602</td><td>2283</td><td>228.3</td><th>7.74x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>329</td><th>5.67x</th><td>815</td><td>800</td><td>1615</td><td>161.5</td><th>5.47x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>110</td><th>1.90x</th><td>248</td><td>1039</td><td>1287</td><td>128.7</td><th>4.36x</th></tr><tr class='best-size'><th class='c1'>ProtoBuf.net</th><td>58</td><th>1x</th><td>136</td><td>256</td><td>392</td><td>39.2</td><th>1.33x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>87</td><th>1.5x</th><td>212</td><td>132</td><td>344</td><td>34.4</td><th>1.17x</th></tr><tr class='best-time'><th class='c1'>Platform TextSerializer</th><td>89</td><th>1.53x</th><td>127</td><td>168</td><td>295</td><td>29.5</td><th>1x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CustomerDto 10 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>482</td><th>3.74x</th><td>324</td><td>979</td><td>1303</td><td>130.3</td><th>4.14x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>256</td><th>1.98x</th><td>488</td><td>1113</td><td>1601</td><td>160.1</td><th>5.08x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>271</td><th>2.10x</th><td>1738</td><td>2965</td><td>4703</td><td>470.3</td><th>14.93x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>635</td><th>4.92x</th><td>1078</td><td>1007</td><td>2085</td><td>208.5</td><th>6.62x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>271</td><th>2.10x</th><td>395</td><td>877</td><td>1272</td><td>127.2</td><th>4.04x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>129</td><th>1x</th><td>158</td><td>157</td><td>315</td><td>31.5</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>202</td><th>1.57x</th><td>195</td><td>152</td><td>347</td><td>34.7</td><th>1.10x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>222</td><th>1.72x</th><td>173</td><td>259</td><td>432</td><td>43.2</td><th>1.37x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeDto 10 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>851</td><th>2.43x</th><td>454</td><td>1055</td><td>1509</td><td>150.9</td><th>3.45x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>598</td><th>1.71x</th><td>817</td><td>1964</td><td>2781</td><td>278.1</td><th>6.36x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>607</td><th>1.73x</th><td>2581</td><td>5750</td><td>8331</td><td>833.1</td><th>19.06x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1092</td><th>3.12x</th><td>1855</td><td>1253</td><td>3108</td><td>310.8</td><th>7.11x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>607</td><th>1.73x</th><td>870</td><td>1710</td><td>2580</td><td>258</td><th>5.90x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>350</td><th>1x</th><td>202</td><td>235</td><td>437</td><td>43.7</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>495</td><th>1.41x</th><td>407</td><td>312</td><td>719</td><td>71.9</td><th>1.65x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>555</td><th>1.59x</th><td>325</td><td>562</td><td>887</td><td>88.7</td><th>2.03x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeTerritoryDto 10 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>233</td><th>12.94x</th><td>240</td><td>544</td><td>784</td><td>78.4</td><th>4.67x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>38</td><th>2.11x</th><td>376</td><td>643</td><td>1019</td><td>101.9</td><th>6.07x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>53</td><th>2.94x</th><td>629</td><td>942</td><td>1571</td><td>157.1</td><th>9.35x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>234</td><th>13x</th><td>660</td><td>779</td><td>1439</td><td>143.9</td><th>8.57x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>53</td><th>2.94x</th><td>272</td><td>676</td><td>948</td><td>94.8</td><th>5.64x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>18</td><th>1x</th><td>101</td><td>67</td><td>168</td><td>16.8</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>43</td><th>2.39x</th><td>188</td><td>151</td><td>339</td><td>33.9</td><th>2.02x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>34</td><th>1.89x</th><td>92</td><td>108</td><td>200</td><td>20</td><th>1.19x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDetailDto 10 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>282</td><th>0x</th><td>317</td><td>740</td><td>1057</td><td>105.7</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>74</td><th>0x</th><td>498</td><td>902</td><td>1400</td><td>140</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>90</td><th>0x</th><td>1136</td><td>2516</td><td>3652</td><td>365.2</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>315</td><th>0x</th><td>895</td><td>893</td><td>1788</td><td>178.8</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>94</td><th>0x</th><td>418</td><td>978</td><td>1396</td><td>139.6</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>21</td><th>0x</th><td>133</td><td>-1</td><td>132</td><td>13.2</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>76</td><th>0x</th><td>227</td><td>173</td><td>400</td><td>40</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>53</td><th>0x</th><td>107</td><td>-1</td><td>106</td><td>10.6</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDto 10 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>615</td><th>5.69x</th><td>471</td><td>1113</td><td>1584</td><td>158.4</td><th>4.53x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>366</td><th>3.39x</th><td>907</td><td>1744</td><td>2651</td><td>265.1</td><th>7.57x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>356</td><th>3.30x</th><td>2378</td><td>4137</td><td>6515</td><td>651.5</td><th>18.61x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>758</td><th>7.02x</th><td>1504</td><td>1137</td><td>2641</td><td>264.1</td><th>7.55x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>366</td><th>3.39x</th><td>697</td><td>1691</td><td>2388</td><td>238.8</td><th>6.82x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>108</td><th>1x</th><td>163</td><td>187</td><td>350</td><td>35</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>253</td><th>2.34x</th><td>404</td><td>269</td><td>673</td><td>67.3</td><th>1.92x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>301</td><th>2.79x</th><td>183</td><td>596</td><td>779</td><td>77.9</td><th>2.23x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ProductDto 10 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>452</td><th>0x</th><td>350</td><td>940</td><td>1290</td><td>129</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>187</td><th>0x</th><td>572</td><td>1194</td><td>1766</td><td>176.6</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>187</td><th>0x</th><td>1559</td><td>3576</td><td>5135</td><td>513.5</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>508</td><th>0x</th><td>942</td><td>966</td><td>1908</td><td>190.8</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>189</td><th>0x</th><td>432</td><td>1123</td><td>1555</td><td>155.5</td><th>0x</th></tr><tr class=''><th class='c1'>ProtoBuf.net</th><td>40</td><th>0x</th><td>116</td><td>65</td><td>181</td><td>18.1</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>163</td><th>0x</th><td>233</td><td>212</td><td>445</td><td>44.5</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>133</td><th>0x</th><td>141</td><td>-1</td><td>140</td><td>14</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing RegionDto 10 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>209</td><th>19x</th><td>225</td><td>558</td><td>783</td><td>78.3</td><th>4.75x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>38</td><th>3.45x</th><td>439</td><td>676</td><td>1115</td><td>111.5</td><th>6.76x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>38</td><th>3.45x</th><td>520</td><td>896</td><td>1416</td><td>141.6</td><th>8.58x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>223</td><th>20.27x</th><td>681</td><td>769</td><td>1450</td><td>145</td><th>8.79x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>38</td><th>3.45x</th><td>241</td><td>485</td><td>726</td><td>72.6</td><th>4.4x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>11</td><th>1x</th><td>95</td><td>70</td><td>165</td><td>16.5</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>32</td><th>2.91x</th><td>192</td><td>76</td><td>268</td><td>26.8</td><th>1.62x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>34</td><th>3.09x</th><td>86</td><td>107</td><td>193</td><td>19.3</td><th>1.17x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ShipperDto 10 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>235</td><th>6.91x</th><td>244</td><td>568</td><td>812</td><td>81.2</td><th>4.30x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>64</td><th>1.88x</th><td>491</td><td>723</td><td>1214</td><td>121.4</td><th>6.42x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>64</td><th>1.88x</th><td>635</td><td>1047</td><td>1682</td><td>168.2</td><th>8.90x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>269</td><th>7.91x</th><td>722</td><td>726</td><td>1448</td><td>144.8</td><th>7.66x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>64</td><th>1.88x</th><td>248</td><td>463</td><td>711</td><td>71.1</td><th>3.76x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>34</td><th>1x</th><td>99</td><td>90</td><td>189</td><td>18.9</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>54</td><th>1.59x</th><td>168</td><td>87</td><td>255</td><td>25.5</td><th>1.35x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>58</td><th>1.71x</th><td>92</td><td>125</td><td>217</td><td>21.7</td><th>1.15x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing SupplierDto 10 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>497</td><th>4.56x</th><td>362</td><td>927</td><td>1289</td><td>128.9</td><th>4.37x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>255</td><th>2.34x</th><td>520</td><td>1510</td><td>2030</td><td>203</td><th>6.88x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>255</td><th>2.34x</th><td>1674</td><td>3174</td><td>4848</td><td>484.8</td><th>16.43x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>611</td><th>5.61x</th><td>1159</td><td>1028</td><td>2187</td><td>218.7</td><th>7.41x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>255</td><th>2.34x</th><td>414</td><td>902</td><td>1316</td><td>131.6</td><th>4.46x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>109</td><th>1x</th><td>145</td><td>150</td><td>295</td><td>29.5</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>180</td><th>1.65x</th><td>215</td><td>159</td><td>374</td><td>37.4</td><th>1.27x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>196</td><th>1.80x</th><td>166</td><td>257</td><td>423</td><td>42.3</td><th>1.43x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing TerritoryDto 10 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>248</td><th>13.05x</th><td>237</td><td>613</td><td>850</td><td>85</td><th>4.67x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>61</td><th>3.21x</th><td>433</td><td>715</td><td>1148</td><td>114.8</td><th>6.31x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>61</td><th>3.21x</th><td>627</td><td>1084</td><td>1711</td><td>171.1</td><th>9.40x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>268</td><th>14.11x</th><td>704</td><td>755</td><td>1459</td><td>145.9</td><th>8.02x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>61</td><th>3.21x</th><td>238</td><td>453</td><td>691</td><td>69.1</td><th>3.80x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>19</td><th>1x</th><td>87</td><td>95</td><td>182</td><td>18.2</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>51</td><th>2.68x</th><td>205</td><td>89</td><td>294</td><td>29.4</td><th>1.62x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>55</td><th>2.89x</th><td>93</td><td>132</td><td>225</td><td>22.5</td><th>1.24x</th></tr>
</tbody>
</table>
</body>
</html>

